<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>分享</title>
</head>
<body>
    
</body>
</html>
<script>
// 1. 字符串排重
function paiChong(str){
        var  str2=str.split("").sort().join("")
        var reg=/(\w)(\1)+/g
        return str2.replace(reg,function(a,b,c){
            return b
        })
    }
var list='1933435677589'
console.log(paiChong(list));

// 数组去重 
// function paiChong2(arr){
//         var str=arr.sort().join("")
//         var reg=/(\w)(\1)+/g
//         return str.replace(reg,function(a,b,c){
//             //console.log("===",a)
//             //console.log("---",b)
//             //console.log("+++",c)
//             return b
//         }).split("")
//     }
// var list2=[1,2,7,2,3,3,4]
// console.log(paiChong2(list2));


// 2. 判断类型
// 使用 typeof bar === "object" 
// 判断 bar 是不是一个对象有什么潜在的弊端？如何避免这种弊端？
let obj = {};
let arr = []; 
console.log(typeof obj === 'object'); //true
console.log(typeof arr === 'object'); //true
console.log(typeof null === 'object'); //true

// 从上面的输出结果可知，typeof bar === "object" 
// 并不能准确判断 bar 就是一个 Object。
// 可以通过 Object.prototype.toString.call(bar) === "[object Object]" 来避免这种弊端：
console.log(Object.prototype.toString.call(obj)); //[object Object]
console.log(Object.prototype.toString.call(arr)); //[object Array]
console.log(Object.prototype.toString.call(null)); //[object Null]


// 3. ES6 对数值进行了扩展，提供了静态方法 
//    isInteger() 来判断参数是否是整数：
console.log(Number.isInteger(25)) // true
console.log(Number.isInteger(25.0)) // true
console.log(Number.isInteger(25.1))- // false
console.log(Number.isInteger("15")) // false
console.log(Number.isInteger(true)) // false



// 4.javascript创建对象的几种方式？
// javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象，
// 当然还可以用JSON；但写法有很多种，也能混合使用

// 1> 对象字面量的方式
person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};

// 2> 用function来模拟 无参的 构造函数
function Person(){}
    var person=new Person();
        person.name="Mark";
        person.age="25";
        person.work=function(){
    console.log(person.name+" hello...");
    }
person.work();

// 3> 用function来模拟有参构造函数来实现（用this关键字定义构造的上下文属性）
function Pet(name,age,hobby){
       //this作用域：当前对象
       this.name=name;
       this.age=age;
       this.hobby=hobby;
       this.eat=function(){
    console.log("我叫"+this.name+",我喜欢"+this.hobby+",是个程序员");
       }
}
var maidou =new Pet("麦兜",25,"coding");//实例化、创建对象
maidou.eat();//调用eat方法


// 4> 用工厂方式来创建（内置对象）	
 var wcDog =new Object();
     wcDog.name="旺财";
     wcDog.age=3;
     wcDog.work=function(){
       console.log("我是"+wcDog.name+",汪汪汪......");
     }
     wcDog.work();

// 5> 用原型方式来创建
function Dog(){}
Dog.prototype.name="旺财";
Dog.prototype.eat=function(){
    console.log(this.name+"是个吃货");
  }
  var wangcai =new Dog();
  wangcai.eat();

// 6> 用混合方式来创建
function Car(name,price){
     this.name=name;
     this.price=price; 
   }
Car.prototype.sell=function(){
      console.log("我是"+this.name+"，我现在卖"+this.price+"万元");
     }
var camry =new Car("凯美瑞",27);
camry.sell();

// 5.在javascript中定义三个变量a，b，c，其定义如：
var a=0,b=1,c=3
// 请写出一下表达式的值
console.log(a || b && c) //3
console.log(a || b )     //1  || 前假输后  都假输后  前真后不顾
console.log(a && b )     //0
console.log(b || c )     //1
console.log(a && c )     //0
 
// 5.  css sprite(图片精灵)是什么,有什么优缺点?
// 概念: 将多个图片拼接到一个图片中. 通过background-position和元素尺寸调节需要显示的背景图案.

// 优点: 减少了http请求数,极大地提高页面加载速度.
//          增加图片信息重复度,提高压缩比,减少图片大小
//          更换风格方便,只需在一张或几张图片上修改颜色或样式即可实现
// 缺点: 图片合并麻烦
//          维护麻烦,修改一个图片可能重新布局整个图片,样式






</script>

